package com.my.screenadapter.fragmenttest;

import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import com.my.screenadapter.R;

import org.greenrobot.eventbus.EventBus;

/**
 * Created by 张英杰 on 2017/1/11.
 */

public class OneFragment extends Fragment {
    int Num = 0;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_one, container, false);
        TextView tv = (TextView) view.findViewById(R.id.tv);
        Button btn = (Button) view.findViewById(R.id.btn);
        btn.setText("");
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String sendStr="OneFragment传递的数据"+(Num++);
                //1 通过接口传递数据到activity 然后调用 fragmet 对象方法传递
//                if (mIFragmentData != null) {
//                    mIFragmentData.passData("OneFragment传递的数据"+(Num++));
//                }

                //2 直接得到 fragment对象 然后。。。
//                TwoFragment twoF = (TwoFragment) getActivity()
//                        .getSupportFragmentManager()
//                        .findFragmentByTag("twoF");
//                twoF.setData("通过得到TwoFragment传递数据" + (++Num));
                //方法3 ：使用三方开源框架：EventBus
//                EventBus是一款针对Android优化的发布/订阅（publish/subscribe）事件总线。
//                主要功能是替代Intent,Handler,BroadCast在Fragment，Activity，Service，线程之间传递消息。
//                简化了应用程序内各组件间、组件与后台线程间的通信。
//                优点是开销小，代码更优雅，以及将发送者和接收者解耦。
//                比如请求网络，等网络返回时通过Handler或Broadcast通知UI，
//                两个Fragment之间需要通过Listener通信，
//                这些需求都可以通过EventBus实现。
//                http://www.jianshu.com/p/f87baad32662
//                step1：引入EventBus
//                step2：注册事件接收者
//                step3：发送事件
//                注：发送事件之前其实还有一步定义事件类型，
//                这里我们传递的数据只有一个类型，所以这一步取消了。
                EventBus.getDefault().post(sendStr);
//                step4：接收消息并处理

            }
        });
        tv.setText("ONE-----");
        return view;
    }

    IFragmentData mIFragmentData;

    public void getFragmentOneData(IFragmentData iFragmentData) {
        mIFragmentData = iFragmentData;
    }
}
